Increasingly, people are required to remember passwords in order to access computer services. For some security applications, for example, it is desirable to have encryption keys as large as 128 bits or more. For many people, such random passwords are hard to remember. When users have trouble remembering random passwords, they typically write the passwords down somewhere or otherwise store the passwords, compromising the security of the password.
A direct approach to this problem is to assign one or more English code words to each bit pattern of a fixed number of bits. Then a passkey can be decomposed into segments of the corresponding number of bits, and each segment can be represented by the word with the corresponding bit code. For example, with a word list 16,384 (i.e., 2^14) words, a user could assign a unique word to each 14-bit pattern and generate a mnemonic by segmenting the key into 14-bit segments and representing each such segment with the word associated with that bit pattern. As example passage generated in this manner for a 126-bit key and 14 bits per word from a list of 16,384 words may be:                “whisky difficulty imported expected alchemistical clawed alate fascistic gangling”While this is definitely easier to memorize than a 126-bit key, the above generated mnemonic is still a random word sequence, and memorizing random word sequences, where the words have no relationship to each other, is still a difficult task.        